home *** CD-ROM | disk | FTP | other *** search
- public class JObList {
- private Node m_head;
- private Node m_tail;
- private int m_nCount;
-
- public Position GetHeadPosition() {
- return this.m_head == null ? null : new Position(this.m_head);
- }
-
- public Object GetAt(Position var1) {
- return var1.element == null ? null : ((Node)var1.element).data;
- }
-
- public Object GetTail() {
- return this.m_tail == null ? null : this.m_tail.data;
- }
-
- public void AddTail(Object var1) {
- Node var2 = new Node(var1);
- if (this.m_tail == null) {
- var2.next = var2.prev = null;
- this.m_head = this.m_tail = var2;
- } else {
- var2.prev = this.m_tail;
- var2.next = null;
- this.m_tail.next = var2;
- this.m_tail = var2;
- }
-
- ++this.m_nCount;
- }
-
- public Object RemoveAt(Position var1) {
- Node var2 = (Node)var1.element;
- var1.element = null;
- if (var2 == null) {
- return null;
- } else {
- Object var3 = var2.data;
- if (this.m_nCount == 1) {
- this.m_head = this.m_tail = null;
- } else if (var2 == this.m_tail) {
- this.m_tail = var2.prev;
- var2.prev.next = null;
- } else if (var2 == this.m_head) {
- this.m_head = var2.next;
- var2.next.prev = null;
- } else {
- var2.prev.next = var2.next;
- var2.next.prev = var2.prev;
- }
-
- this.m_nCount += -1;
- return var3;
- }
- }
-
- public Object GetHead() {
- return this.m_head == null ? null : this.m_head.data;
- }
-
- public void AddHead(Object var1) {
- Node var2 = new Node(var1);
- if (this.m_head == null) {
- var2.next = var2.prev = null;
- this.m_head = this.m_tail = var2;
- } else {
- var2.prev = null;
- var2.next = this.m_head;
- this.m_head.prev = var2;
- this.m_head = var2;
- }
-
- ++this.m_nCount;
- }
-
- public String toString() {
- String var1 = "List contains " + this.m_nCount + " items: \n";
-
- for(Node var2 = this.m_head; var2 != null; var2 = var2.next) {
- var1 = var1 + var2.toString();
- }
-
- return var1;
- }
-
- public Object Remove(Object var1) {
- Position var2 = this.Find(var1);
- if (var2 == null) {
- return null;
- } else {
- return var2.element == null ? null : this.RemoveAt(var2);
- }
- }
-
- public Position FindNext(Object var1, Position var2) {
- Node var3 = null;
- if (var2 != null) {
- var3 = (Node)var2.element;
- }
-
- if (var3 == null) {
- var3 = this.m_head;
- }
-
- while(var3 != null && !var1.equals(var3.data)) {
- var3 = var3.next;
- }
-
- return new Position(var3);
- }
-
- public Position GetTailPosition() {
- return this.m_tail == null ? null : new Position(this.m_tail);
- }
-
- public Object RemoveHead() {
- if (this.m_head == null) {
- return null;
- } else {
- Object var1 = this.m_head.data;
- this.m_head = this.m_head.next;
- if (this.m_head != null) {
- this.m_head.prev = null;
- } else {
- this.m_tail = null;
- }
-
- this.m_nCount += -1;
- return var1;
- }
- }
-
- public void RemoveAll() {
- while(this.m_nCount > 0) {
- this.RemoveHead();
- }
-
- this.m_nCount = 0;
- this.m_head = this.m_tail = null;
- }
-
- public boolean IsEmpty() {
- return this.m_nCount == 0;
- }
-
- public Position Find(Object var1) {
- Node var2;
- for(var2 = this.m_head; var2 != null && !var1.equals(var2.data); var2 = var2.next) {
- }
-
- return var2 == null ? null : new Position(var2);
- }
-
- public Object GetPrev(Position var1) {
- if (var1.element == null) {
- return null;
- } else {
- Object var2 = ((Node)var1.element).data;
- var1.element = ((Node)var1.element).prev;
- return var2;
- }
- }
-
- public Object GetNext(Position var1) {
- if (var1.element == null) {
- return null;
- } else {
- Object var2 = ((Node)var1.element).data;
- var1.element = ((Node)var1.element).next;
- return var2;
- }
- }
- }
-